[
  {
    "description": "one property has format set in another property",
    "schema": {
      "properties": {
        "str": { "format": { "$data": "1/strFormat" } },
        "strFormat": {}
      }
    },
    "tests": [
      {
        "description": "a valid date-time string",
        "data": {
          "str": "1963-06-19T08:30:06.283185Z",
          "strFormat": "date-time"
        },
        "valid": true
      },
      {
        "description": "an invalid date-time string",
        "data": {
          "str": "06/19/1963 08:30:06 PST",
          "strFormat": "date-time"
        },
        "valid": false
      },
      {
        "description": "only RFC3339 not all of ISO 8601 are valid",
        "data": {
          "str": "2013-350T01:01:01",
          "strFormat": "date-time"
        },
        "valid": false
      },
      {
        "description": "a valid e-mail address",
        "data": {
          "str": "joe.bloggs@example.com",
          "strFormat": "email"
        },
        "valid": true
      },
      {
        "description": "an invalid e-mail address",
        "data": {
          "str": "2962",
          "strFormat": "email"
        },
        "valid": false
      },
      {
        "description": "whitelisted unknown format is valid",
        "data": {
          "str": "any value",
          "strFormat": "allowedUnknown"
        },
        "valid": true
      },
      {
        "description": "not whitelisted unknown format is invalid",
        "data": {
          "str": "any value",
          "strFormat": "completelyUnknown"
        },
        "valid": false
      },
      {
        "description": "valid if the format is undefined",
        "data": {
          "str": "any value"
        },
        "valid": true
      },
      {
        "description": "fails if value of format is not a string",
        "data": {
          "str": "1963-06-19T08:30:06.283185Z",
          "strFormat": 1963
        },
        "valid": false
      }
    ]
  },
  {
    "description": "property name is the format for the property value",
    "schema": {
      "additionalProperties": {
        "format": { "$data": "0#" }
      }
    },
    "tests": [
      {
        "description": "valid formats",
        "data": {
          "date-time": "1963-06-19T08:30:06.283185Z",
          "email": "joe.bloggs@example.com"
        },
        "valid": true
      },
      {
        "description": "invalid date-time",
        "data": {
          "date-time": "06/19/1963 08:30:06 PST",
          "email": "joe.bloggs@example.com"
        },
        "valid": false
      },
      {
        "description": "invalid e-mail",
        "data": {
          "date-time": "1963-06-19T08:30:06.283185Z",
          "email": "2962"
        },
        "valid": false
      }
    ]
  }
]
